package models

import (
	"ginadmin/db"
	"github.com/jinzhu/gorm"
)

//菜单表
type Menu struct {
	gorm.Model
	Name     string
	Url      string
	ParentId uint //0代表一级菜单
}

func DelMenu(id uint) error {
	DB := db.GetInstance().GetDB()
	err := DB.Where("id=?", id).Delete(Menu{}).Error
	return err
}

func (menu *Menu) UpdateMenu() error {
	DB := db.GetInstance().GetDB()
	err := DB.Save(menu).Error
	return err
}

func FindMenuById(id string) (menu Menu, err error) {
	DB := db.GetInstance().GetDB()
	err = DB.Find(&menu, id).Error
	if err != nil {
		return menu, err
	}
	return menu, nil
}

func (m *Menu) Add() error {
	err := new(error)
	DB := db.GetInstance().GetDB()
	if *err = DB.Create(m).Error; err != nil {
		return *err
	}
	return *err
}

func MenuListInMenuId(ids string) (menu []Menu, err error) {
	DB := db.GetInstance().GetDB()

	err = DB.Where("id in (" + ids + ")").Find(&menu).Error
	if err != nil {
		return menu, err
	}
	return menu, err
}

func MenuAll() (menu []Menu, err error) {
	DB := db.GetInstance().GetDB()

	err = DB.Find(&menu).Error
	if err != nil {
		return menu, err
	}
	return menu, err
}

func MenuList(parentId uint) (menu []Menu, err error) {
	DB := db.GetInstance().GetDB()

	if parentId != 0 {
		DB = DB.Where("parent_id=?", parentId)
	}
	err = DB.Find(&menu).Error
	if err != nil {
		return menu, err
	}
	return menu, err
}

func MenuListByParentId(parentId uint) (menu []Menu, err error) {
	DB := db.GetInstance().GetDB()
	DB = DB.Where("parent_id=?", parentId).Order("id asc")
	err = DB.Find(&menu).Error
	if err != nil {
		return menu, err
	}
	return menu, err
}
